﻿//3258. 统计满足 K 约束的子字符串数量 I
//给你一个 二进制 字符串 s 和一个整数 k。
//如果一个 二进制字符串 满足以下任一条件，则认为该字符串满足 k 约束：
//字符串中 0 的数量最多为 k。
//字符串中 1 的数量最多为 k。
//返回一个整数，表示 s 的所有满足 k 约束 的子字符串的数量。




class Solution {
public:
    int countKConstraintSubstrings(string s, int k)
    {
        int n = s.size();
        int left = 0, right = -1;
        int zero = 0, one = 0;
        int ans = 0;
        for (right = 0; right < n; right++)
        {
            if (s[right] == '0') zero++;
            else              one++;
            while (zero > k && one > k)
            {
                if (s[left] == '0')  zero--;
                else              one--;
                left++;
            }
            ans += right - left + 1;
        }
        return ans;
    }
};